<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>NotationRule</title>
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="NotationRule";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../mmj/verify/GRNode.html" title="class in mmj.verify"><span class="strong">Prev Class</span></a></li>
<li><a href="../../mmj/verify/NullsPermittedRule.html" title="class in mmj.verify"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?mmj/verify/NotationRule.html" target="_top">Frames</a></li>
<li><a href="NotationRule.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">mmj.verify</div>
<h2 title="Class NotationRule" class="title">Class NotationRule</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">mmj.verify.GrammarRule</a></li>
<li>
<ul class="inheritance">
<li>mmj.verify.NotationRule</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="strong">NotationRule</span>
extends <a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">GrammarRule</a></pre>
<div class="block">Notation Grammar Rules are the main Grammar Rules used to arrange symbols
 representing grammatical types, such as "wff" and "class".
 <p>
 NotationRule objects are built from "base" Syntax Axioms, possibly modified
 by Type Conversion Rules and/or Nulls Permitted Rules.
 <p>
 At this time, only NotationRule objects are stored in the Grammar Rule
 Tree/Forests, though it may be that use of the Tree/Forest structures are not
 needed (perhaps an essential use will be found in
 mmj.verify.GrammarAmbiguity).</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../CreatingGrammarRulesFromSyntaxAxioms.html">
      CreatingGrammarRulesFromSyntaxAxioms.html</a>, 
<a href="../../ConsolidatedListOfGrammarValidations.html">
      ConsolidatedListOfGrammarValidations.html</a>, 
<a href="../../BasicsOfSyntaxAxiomsAndTypes.html">
      BasicsOfSyntaxAxiomsAndTypes.html</a>, 
<a href="../../EssentialAmbiguityExamples.html">
      EssentialAmbiguityExamples.html</a>, 
<a href="../../GrammarRuleTreeNotes.html"> GrammarRuleTreeNotes.html</a>, 
<a href="../../MetamathERNotes.html"> Nomenclature and
      Entity-Relationship Notes</a></dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../mmj/verify/GRNode.html" title="class in mmj.verify">GRNode</a></code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#gRTail">gRTail</a></strong></code>
<div class="block">gRTail: is an object reference pointing to the terminal node in the Rule
 Tree/Forest for this grammar rule.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#isGimmeMatchNbr">isGimmeMatchNbr</a></strong></code>
<div class="block">isGimmeMatchNbr: equals 1 if the NotationRule is a "gimme match", meaning
 that a match to a subsequence of an expression can be taken unequivocally
 and irrevocably, regardless of the surrounding symbols (for example, in
 set.mm "c0" is a gimme match).</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_mmj.verify.GrammarRule">
<!--   -->
</a>
<h3>Fields inherited from class&nbsp;mmj.verify.<a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">GrammarRule</a></h3>
<code><a href="../../mmj/verify/GrammarRule.html#isBaseRule">isBaseRule</a>, <a href="../../mmj/verify/GrammarRule.html#MAX_SEQ_NBR">MAX_SEQ_NBR</a>, <a href="../../mmj/verify/GrammarRule.html#maxSeqNbr">maxSeqNbr</a>, <a href="../../mmj/verify/GrammarRule.html#nbrHypParamsUsed">nbrHypParamsUsed</a>, <a href="../../mmj/verify/GrammarRule.html#paramTransformationTree">paramTransformationTree</a>, <a href="../../mmj/verify/GrammarRule.html#paramVarHypNode">paramVarHypNode</a>, <a href="../../mmj/verify/GrammarRule.html#RULE_NBR">RULE_NBR</a>, <a href="../../mmj/verify/GrammarRule.html#ruleFormatExpr">ruleFormatExpr</a>, <a href="../../mmj/verify/GrammarRule.html#ruleHypPos">ruleHypPos</a>, <a href="../../mmj/verify/GrammarRule.html#ruleNbr">ruleNbr</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../mmj/verify/NotationRule.html#NotationRule()">NotationRule</a></strong>()</code>
<div class="block">Default constructor.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../mmj/verify/NotationRule.html#NotationRule(mmj.verify.Grammar, mmj.lang.Axiom)">NotationRule</a></strong>(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
            <a href="../../mmj/lang/Axiom.html" title="class in mmj.lang">Axiom</a>&nbsp;baseSyntaxAxiom)</code>
<div class="block">Constructor -- default GrammarRule for base Syntax Axioms, which means no
 parameter "transformations".</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../mmj/verify/NotationRule.html#NotationRule(mmj.verify.Grammar, mmj.verify.NotationRule, int, mmj.verify.NullsPermittedRule)">NotationRule</a></strong>(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
            <a href="../../mmj/verify/NotationRule.html" title="class in mmj.verify">NotationRule</a>&nbsp;oldNotationRule,
            int&nbsp;matchIndex,
            <a href="../../mmj/verify/NullsPermittedRule.html" title="class in mmj.verify">NullsPermittedRule</a>&nbsp;nullsPermittedRule)</code>
<div class="block">Construct new NotationRule using a Notation rule which is being "cloned"
 and modified by substituting the paramTransformationTree from a
 NullsPermittedRule for one of the existing rule's variable hypothesis
 paramTransformationTree nodes.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../mmj/verify/NotationRule.html#NotationRule(mmj.verify.Grammar, mmj.verify.NotationRule, int, mmj.verify.TypeConversionRule)">NotationRule</a></strong>(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
            <a href="../../mmj/verify/NotationRule.html" title="class in mmj.verify">NotationRule</a>&nbsp;oldNotationRule,
            int&nbsp;matchIndex,
            <a href="../../mmj/verify/TypeConversionRule.html" title="class in mmj.verify">TypeConversionRule</a>&nbsp;typeConversionRule)</code>
<div class="block">Build new NotationRule using a Notation rule which is being "cloned" and
 modified by substituting the paramTransformationTree from a
 TypeConversionRule for one of the existing rule's variable hypothesis
 paramTransformationTree nodes.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#addToGrammar(mmj.verify.Grammar, mmj.lang.Cnst[])">addToGrammar</a></strong>(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
            <a href="../../mmj/lang/Cnst.html" title="class in mmj.lang">Cnst</a>[]&nbsp;ruleFormatExprIn)</code>
<div class="block">Add rule format expression to the Rule Forest.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../mmj/verify/NotationRule.html" title="class in mmj.verify">NotationRule</a></code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#buildBaseRule(mmj.verify.Grammar, mmj.lang.Axiom)">buildBaseRule</a></strong>(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
             <a href="../../mmj/lang/Axiom.html" title="class in mmj.lang">Axiom</a>&nbsp;baseSyntaxAxiom)</code>
<div class="block">NotationRule "base" Syntax Axiom rule builder, which means no parameter
 "transformations".</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#deriveAdditionalRules(mmj.verify.Grammar)">deriveAdditionalRules</a></strong>(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar)</code>
<div class="block">deriveAdditionalRules based on the addition of a new GrammarRule to those
 already generated and accepted.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#deriveRulesUsingNullsPermitted(mmj.verify.Grammar, mmj.verify.NullsPermittedRule)">deriveRulesUsingNullsPermitted</a></strong>(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
                              <a href="../../mmj/verify/NullsPermittedRule.html" title="class in mmj.verify">NullsPermittedRule</a>&nbsp;nullsPermittedRule)</code>
<div class="block">Derives new grammar rules from an existing NotationRule and a
 NullsPermittedRule, which will be applied to matching variable hypothesis
 nodes in the NotationRule.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#deriveRulesUsingTypeConversion(mmj.verify.Grammar, mmj.verify.TypeConversionRule)">deriveRulesUsingTypeConversion</a></strong>(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
                              <a href="../../mmj/verify/TypeConversionRule.html" title="class in mmj.verify">TypeConversionRule</a>&nbsp;typeConversionRule)</code>
<div class="block">Derives new grammar rules from an existing NotationRule and a
 TypeConversionRule, which will be applied to matching variable hypothesis
 nodes in the NotationRule.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">GrammarRule</a></code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#getDupRule(mmj.verify.Grammar, mmj.lang.Cnst[])">getDupRule</a></strong>(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
          <a href="../../mmj/lang/Cnst.html" title="class in mmj.lang">Cnst</a>[]&nbsp;ruleFormatExprIn)</code>
<div class="block">Return a duplicate of the input ruleFormatExpr if it exists, or return
 null.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../mmj/lang/Cnst.html" title="class in mmj.lang">Cnst</a>[]</code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#getForestRuleExpr()">getForestRuleExpr</a></strong>()</code>
<div class="block">Returns the ruleFormatExpr for the Notation Rule after retrieving it from
 the Grammar Rule Tree/Forest.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../mmj/verify/GRNode.html" title="class in mmj.verify">GRNode</a></code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#getGRTail()">getGRTail</a></strong>()</code>
<div class="block">Return gRTail for the NotationRule.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#getIsGimmeMatchNbr()">getIsGimmeMatchNbr</a></strong>()</code>
<div class="block">Return isGimmeMatchNbr for the NotationRule.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#setGRTail(mmj.verify.GRNode)">setGRTail</a></strong>(<a href="../../mmj/verify/GRNode.html" title="class in mmj.verify">GRNode</a>&nbsp;gRTail)</code>
<div class="block">Set the gRTail for the NotationRule.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../mmj/verify/NotationRule.html#setIsGimmeMatchNbr(int)">setIsGimmeMatchNbr</a></strong>(int&nbsp;isGimmeMatchNbr)</code>
<div class="block">Set isGimmeMatchNbr for the NotationRule.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_mmj.verify.GrammarRule">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;mmj.verify.<a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">GrammarRule</a></h3>
<code><a href="../../mmj/verify/GrammarRule.html#add(mmj.lang.Axiom, mmj.verify.Grammar)">add</a>, <a href="../../mmj/verify/GrammarRule.html#buildGrammaticalParseNode(mmj.lang.ParseNodeHolder[])">buildGrammaticalParseNode</a>, <a href="../../mmj/verify/GrammarRule.html#buildRuleFormatExpr()">buildRuleFormatExpr</a>, <a href="../../mmj/verify/GrammarRule.html#compareTo(java.lang.Object)">compareTo</a>, <a href="../../mmj/verify/GrammarRule.html#equals(java.lang.Object)">equals</a>, <a href="../../mmj/verify/GrammarRule.html#findMatchingVarHypTyp(int, mmj.lang.Cnst)">findMatchingVarHypTyp</a>, <a href="../../mmj/verify/GrammarRule.html#getBaseSyntaxAxiom()">getBaseSyntaxAxiom</a>, <a href="../../mmj/verify/GrammarRule.html#getGrammarRuleTyp()">getGrammarRuleTyp</a>, <a href="../../mmj/verify/GrammarRule.html#getIsBaseRule()">getIsBaseRule</a>, <a href="../../mmj/verify/GrammarRule.html#getMaxSeqNbr()">getMaxSeqNbr</a>, <a href="../../mmj/verify/GrammarRule.html#getNbrHypParamsUsed()">getNbrHypParamsUsed</a>, <a href="../../mmj/verify/GrammarRule.html#getParamTransformationTree()">getParamTransformationTree</a>, <a href="../../mmj/verify/GrammarRule.html#getParamVarHypNode()">getParamVarHypNode</a>, <a href="../../mmj/verify/GrammarRule.html#getParseNodeHolderExpr()">getParseNodeHolderExpr</a>, <a href="../../mmj/verify/GrammarRule.html#getRuleFormatExpr()">getRuleFormatExpr</a>, <a href="../../mmj/verify/GrammarRule.html#getRuleFormatExprAsString()">getRuleFormatExprAsString</a>, <a href="../../mmj/verify/GrammarRule.html#getRuleFormatExprFirst()">getRuleFormatExprFirst</a>, <a href="../../mmj/verify/GrammarRule.html#getRuleFormatExprIthSymbol(int)">getRuleFormatExprIthSymbol</a>, <a href="../../mmj/verify/GrammarRule.html#getRuleHypPos()">getRuleHypPos</a>, <a href="../../mmj/verify/GrammarRule.html#getRuleNbr()">getRuleNbr</a>, <a href="../../mmj/verify/GrammarRule.html#getSyntaxAxiomVarHypReseq()">getSyntaxAxiomVarHypReseq</a>, <a href="../../mmj/verify/GrammarRule.html#hashCode()">hashCode</a>, <a href="../../mmj/verify/GrammarRule.html#setIsBaseRule(boolean)">setIsBaseRule</a>, <a href="../../mmj/verify/GrammarRule.html#setMaxSeqNbr(int)">setMaxSeqNbr</a>, <a href="../../mmj/verify/GrammarRule.html#setNbrHypParamsUsed(int)">setNbrHypParamsUsed</a>, <a href="../../mmj/verify/GrammarRule.html#setRuleFormatExpr(mmj.lang.Cnst[])">setRuleFormatExpr</a>, <a href="../../mmj/verify/GrammarRule.html#showRuleFormatExprAsString(mmj.lang.Cnst[])">showRuleFormatExprAsString</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="isGimmeMatchNbr">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isGimmeMatchNbr</h4>
<pre>protected&nbsp;int isGimmeMatchNbr</pre>
<div class="block">isGimmeMatchNbr: equals 1 if the NotationRule is a "gimme match", meaning
 that a match to a subsequence of an expression can be taken unequivocally
 and irrevocably, regardless of the surrounding symbols (for example, in
 set.mm "c0" is a gimme match).
 <p>
 Note: -1 and 0 are used in mmj.verify.GrammarAmbiguity to signify
 "not a gimmeMatchNbr" in two different circumstances.</div>
</li>
</ul>
<a name="gRTail">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>gRTail</h4>
<pre>protected&nbsp;<a href="../../mmj/verify/GRNode.html" title="class in mmj.verify">GRNode</a> gRTail</pre>
<div class="block">gRTail: is an object reference pointing to the terminal node in the Rule
 Tree/Forest for this grammar rule.</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="NotationRule()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NotationRule</h4>
<pre>public&nbsp;NotationRule()</pre>
<div class="block">Default constructor.</div>
</li>
</ul>
<a name="NotationRule(mmj.verify.Grammar, mmj.lang.Axiom)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NotationRule</h4>
<pre>public&nbsp;NotationRule(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
            <a href="../../mmj/lang/Axiom.html" title="class in mmj.lang">Axiom</a>&nbsp;baseSyntaxAxiom)</pre>
<div class="block">Constructor -- default GrammarRule for base Syntax Axioms, which means no
 parameter "transformations".</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>grammar</code> - The Grammar.</dd><dd><code>baseSyntaxAxiom</code> - Syntax Axiom.</dd></dl>
</li>
</ul>
<a name="NotationRule(mmj.verify.Grammar, mmj.verify.NotationRule, int, mmj.verify.NullsPermittedRule)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NotationRule</h4>
<pre>public&nbsp;NotationRule(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
            <a href="../../mmj/verify/NotationRule.html" title="class in mmj.verify">NotationRule</a>&nbsp;oldNotationRule,
            int&nbsp;matchIndex,
            <a href="../../mmj/verify/NullsPermittedRule.html" title="class in mmj.verify">NullsPermittedRule</a>&nbsp;nullsPermittedRule)</pre>
<div class="block">Construct new NotationRule using a Notation rule which is being "cloned"
 and modified by substituting the paramTransformationTree from a
 NullsPermittedRule for one of the existing rule's variable hypothesis
 paramTransformationTree nodes.
 <p>
 Note that the output paramTransformationTree is built using a deep clone
 of the existing rule's paramTransformationTree but the substituting tree
 does not need cloning BECAUSE when the GrammaticalParser builds a
 ParseTree for an expression, *it* does a full cloning operation; this, of
 course assumes that once a GrammarRule is created and fully populated
 that it is never modified (changing the grammar means rebuilding it, in
 other words.)</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>grammar</code> - The Grammar.</dd><dd><code>oldNotationRule</code> - rule being "cloned".</dd><dd><code>matchIndex</code> - index to paramVarHypNode array indicating which VarHyp
            is being substituted.</dd><dd><code>nullsPermittedRule</code> - the modifying rule.</dd></dl>
</li>
</ul>
<a name="NotationRule(mmj.verify.Grammar, mmj.verify.NotationRule, int, mmj.verify.TypeConversionRule)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>NotationRule</h4>
<pre>public&nbsp;NotationRule(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
            <a href="../../mmj/verify/NotationRule.html" title="class in mmj.verify">NotationRule</a>&nbsp;oldNotationRule,
            int&nbsp;matchIndex,
            <a href="../../mmj/verify/TypeConversionRule.html" title="class in mmj.verify">TypeConversionRule</a>&nbsp;typeConversionRule)</pre>
<div class="block">Build new NotationRule using a Notation rule which is being "cloned" and
 modified by substituting the paramTransformationTree from a
 TypeConversionRule for one of the existing rule's variable hypothesis
 paramTransformationTree nodes.
 <p>
 Note that the output paramTransformationTree is built using a deep clone
 of the existing rule's paramTransformationTree, but the substituting tree
 does not need cloning BECAUSE when the GrammaticalParser builds a
 ParseTree for an expression, *it* does a full cloning operation; this, of
 course assumes that once a GrammarRule is created and fully populated
 that it is never modified (changing the grammar means rebuilding it, in
 other words.)</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>grammar</code> - The Grammar.</dd><dd><code>oldNotationRule</code> - rule being "cloned".</dd><dd><code>matchIndex</code> - index to paramVarHypNode array indicating which VarHyp
            is being substituted.</dd><dd><code>typeConversionRule</code> - the modifying rule.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="buildBaseRule(mmj.verify.Grammar, mmj.lang.Axiom)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildBaseRule</h4>
<pre>public static&nbsp;<a href="../../mmj/verify/NotationRule.html" title="class in mmj.verify">NotationRule</a>&nbsp;buildBaseRule(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
                         <a href="../../mmj/lang/Axiom.html" title="class in mmj.lang">Axiom</a>&nbsp;baseSyntaxAxiom)</pre>
<div class="block">NotationRule "base" Syntax Axiom rule builder, which means no parameter
 "transformations".</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>grammar</code> - The Grammar.</dd><dd><code>baseSyntaxAxiom</code> - Syntax Axiom.</dd>
<dt><span class="strong">Returns:</span></dt><dd>new NotationRule.</dd></dl>
</li>
</ul>
<a name="getDupRule(mmj.verify.Grammar, mmj.lang.Cnst[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDupRule</h4>
<pre>public&nbsp;<a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">GrammarRule</a>&nbsp;getDupRule(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
                     <a href="../../mmj/lang/Cnst.html" title="class in mmj.lang">Cnst</a>[]&nbsp;ruleFormatExprIn)</pre>
<div class="block">Return a duplicate of the input ruleFormatExpr if it exists, or return
 null.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../mmj/verify/GrammarRule.html#getDupRule(mmj.verify.Grammar, mmj.lang.Cnst[])">getDupRule</a></code>&nbsp;in class&nbsp;<code><a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">GrammarRule</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>grammar</code> - The Grammar.</dd><dd><code>ruleFormatExprIn</code> - the expression to check.</dd>
<dt><span class="strong">Returns:</span></dt><dd>GrammarRule if duplicate found, or null.</dd></dl>
</li>
</ul>
<a name="addToGrammar(mmj.verify.Grammar, mmj.lang.Cnst[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addToGrammar</h4>
<pre>public&nbsp;void&nbsp;addToGrammar(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
                <a href="../../mmj/lang/Cnst.html" title="class in mmj.lang">Cnst</a>[]&nbsp;ruleFormatExprIn)</pre>
<div class="block">Add rule format expression to the Rule Forest.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../mmj/verify/GrammarRule.html#addToGrammar(mmj.verify.Grammar, mmj.lang.Cnst[])">addToGrammar</a></code>&nbsp;in class&nbsp;<code><a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">GrammarRule</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>grammar</code> - The Grammar object (Mr Big).</dd><dd><code>ruleFormatExprIn</code> - the expression to add.</dd></dl>
</li>
</ul>
<a name="deriveAdditionalRules(mmj.verify.Grammar)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deriveAdditionalRules</h4>
<pre>public&nbsp;void&nbsp;deriveAdditionalRules(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar)</pre>
<div class="block">deriveAdditionalRules based on the addition of a new GrammarRule to those
 already generated and accepted.
 <p>
 A PriorityQueue is used to store new derivedGrammarRules awaiting
 processing (dup checking, parse checking and possible addition to the
 Grammar data.) The Comparator orders derived rules based on MaxSeqNbr and
 ruleNbr so that low Metamath sequence number statements are added to the
 Grammar before higher sequenced statements. The existing rules are stored
 in separate repositories, which are scanned, as needed, when a new rule
 is added; the order that the repositories are scanned is irrelevant
 because the PriorityQueue controls update processing sequence.
 <p>
 Note also that a newly derived rule may generate other derived rules,
 which in turn trigger other derivations; this is a "feature" (as well as
 a scary opportunity for an infinite loop!) The benefit is that each pair
 of rules may be considered separately; when processing the pair there is
 no need to worry about other possible Type Conversion and Null Permitted
 Rules. For example, an "A" Type hypothesis in a Notation Rule may be the
 target of a "B to A" Type Conversion, but the fact that there is a
 "C to B" or "C to A" conversion can be ignored -- if the "B to A"
 conversion generates a variant rule of the original rule, then when
 *that* rule comes back through the PriorityQueue, the "C to B" rule will
 automatically come into play. This also means that a "B to A" conversion
 will combine with a "C to B" conversion to generate a "C to A" conversion
 -- eventually.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../mmj/verify/GrammarRule.html#deriveAdditionalRules(mmj.verify.Grammar)">deriveAdditionalRules</a></code>&nbsp;in class&nbsp;<code><a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">GrammarRule</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>grammar</code> - The Grammar.</dd></dl>
</li>
</ul>
<a name="deriveRulesUsingNullsPermitted(mmj.verify.Grammar, mmj.verify.NullsPermittedRule)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deriveRulesUsingNullsPermitted</h4>
<pre>public&nbsp;void&nbsp;deriveRulesUsingNullsPermitted(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
                                  <a href="../../mmj/verify/NullsPermittedRule.html" title="class in mmj.verify">NullsPermittedRule</a>&nbsp;nullsPermittedRule)</pre>
<div class="block">Derives new grammar rules from an existing NotationRule and a
 NullsPermittedRule, which will be applied to matching variable hypothesis
 nodes in the NotationRule.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>grammar</code> - The Grammar.</dd><dd><code>nullsPermittedRule</code> - the modifying rule.</dd></dl>
</li>
</ul>
<a name="deriveRulesUsingTypeConversion(mmj.verify.Grammar, mmj.verify.TypeConversionRule)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deriveRulesUsingTypeConversion</h4>
<pre>public&nbsp;void&nbsp;deriveRulesUsingTypeConversion(<a href="../../mmj/verify/Grammar.html" title="class in mmj.verify">Grammar</a>&nbsp;grammar,
                                  <a href="../../mmj/verify/TypeConversionRule.html" title="class in mmj.verify">TypeConversionRule</a>&nbsp;typeConversionRule)</pre>
<div class="block">Derives new grammar rules from an existing NotationRule and a
 TypeConversionRule, which will be applied to matching variable hypothesis
 nodes in the NotationRule.
 <p>
 Note: combinations of var hyps are not considered here, just one
 application of the TypeConversionRule per derived rule. The reason is
 that the new derived rule goes into the queue and is then itself used to
 create new rules (if any). Eventually all matching combinations are
 considered without the complexity of dealing with them here.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>grammar</code> - The Grammar.</dd><dd><code>typeConversionRule</code> - the modifying rule.</dd></dl>
</li>
</ul>
<a name="getForestRuleExpr()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getForestRuleExpr</h4>
<pre>public&nbsp;<a href="../../mmj/lang/Cnst.html" title="class in mmj.lang">Cnst</a>[]&nbsp;getForestRuleExpr()</pre>
<div class="block">Returns the ruleFormatExpr for the Notation Rule after retrieving it from
 the Grammar Rule Tree/Forest.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../mmj/verify/GrammarRule.html#getForestRuleExpr()">getForestRuleExpr</a></code>&nbsp;in class&nbsp;<code><a href="../../mmj/verify/GrammarRule.html" title="class in mmj.verify">GrammarRule</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>ruleFormatExpr for the NotationRule.</dd></dl>
</li>
</ul>
<a name="getGRTail()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGRTail</h4>
<pre>public&nbsp;<a href="../../mmj/verify/GRNode.html" title="class in mmj.verify">GRNode</a>&nbsp;getGRTail()</pre>
<div class="block">Return gRTail for the NotationRule.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>gRTail for the NotationRule.</dd></dl>
</li>
</ul>
<a name="setGRTail(mmj.verify.GRNode)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setGRTail</h4>
<pre>public&nbsp;void&nbsp;setGRTail(<a href="../../mmj/verify/GRNode.html" title="class in mmj.verify">GRNode</a>&nbsp;gRTail)</pre>
<div class="block">Set the gRTail for the NotationRule.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>gRTail</code> - for the NotationRule.</dd></dl>
</li>
</ul>
<a name="getIsGimmeMatchNbr()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIsGimmeMatchNbr</h4>
<pre>public&nbsp;int&nbsp;getIsGimmeMatchNbr()</pre>
<div class="block">Return isGimmeMatchNbr for the NotationRule.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>isGimmeMatchNbr for the NotationRule.</dd></dl>
</li>
</ul>
<a name="setIsGimmeMatchNbr(int)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setIsGimmeMatchNbr</h4>
<pre>public&nbsp;void&nbsp;setIsGimmeMatchNbr(int&nbsp;isGimmeMatchNbr)</pre>
<div class="block">Set isGimmeMatchNbr for the NotationRule.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>isGimmeMatchNbr</code> - for the NotationRule.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../mmj/verify/GRNode.html" title="class in mmj.verify"><span class="strong">Prev Class</span></a></li>
<li><a href="../../mmj/verify/NullsPermittedRule.html" title="class in mmj.verify"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?mmj/verify/NotationRule.html" target="_top">Frames</a></li>
<li><a href="NotationRule.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
